home *** CD-ROM | disk | FTP | other *** search
-
- SHMEM_QUIET(3) SHMEM_QUIET(3)
-
-
- NNNNAAAAMMMMEEEE
- sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt - Waits for completion of all outstanding remote writes
- issued by a processing element (PE)
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- C or C++:
-
- ####iiiinnnncccclllluuuuddddeeee <<<<mmmmpppppppp////sssshhhhmmmmeeeemmmm....hhhh>>>>
-
- vvvvooooiiiidddd sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt((((vvvvooooiiiidddd))));;;;
-
- Fortran:
-
- CCCCAAAALLLLLLLL SSSSHHHHMMMMEEEEMMMM____QQQQUUUUIIIIEEEETTTT
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt ensures ordering of put (remote write) operations. All
- put operations issued to any processing element (PE) prior to the call
- to sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt are guaranteed to be visible to all other PEs no later
- than any subsequent memory load or store, remote put or get, or
- synchronization operations that follow the call to sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt.
-
- NNNNOOOOTTTTEEEESSSS
- sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt is an inlined macro in C/C++. To get the function form,
- the sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt macro name must be undefined by use of the ####uuuunnnnddddeeeeffff
- sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt ccccpppppppp(1) directive.
-
- sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt is most useful as a way of ensuring ordering of delivery
- of several ppppuuuutttt operations. For example, you might use sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt to
- await delivery of a block of data before issuing another ppppuuuutttt, which
- sets a completion flag on another PE.
-
- sssshhhhmmmmeeeemmmm____qqqquuuuiiiieeeetttt is not usually needed if sssshhhhmmmmeeeemmmm____bbbbaaaarrrrrrrriiiieeeerrrr____aaaallllllll(3) or
- sssshhhhmmmmeeeemmmm____bbbbaaaarrrrrrrriiiieeeerrrr(3) are called. The barrier routines all wait for the
- completion of outstanding remote writes (ppppuuuutttts).
-
- EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
- PROGRAM COMPFLAG
- INTEGER FLAG_VAR, ARRAY(100), RECEIVER, SENDER
- COMMON/FLAG/FLAG_VAR
- COMMON/DATA/ARRAY
- INTRINSIC MY_PE
-
- FLAG_VAR = 0
- CALL SHMEM_BARRIER_ALL ! wait for FLAG_VAR to be initialized
-
- SENDER = 0 ! PE 0 sends the data
- RECEIVER = 1 ! PE 1 receives the data
- IF (MY_PE() .EQ. 0) THEN
- ARRAY = 33
- CALL SHMEM_PUT(ARRAY, ARRAY, 100, RECEIVER) ! start sending data
- CALL SHMEM_QUIET ! wait for delivery
- CALL SHMEM_PUT(FLAG_VAR, 1, 1, RECEIVER) ! send completion flag
- ELSE IF (MY_PE() .EQ. RECEIVER) THEN
- CALL SHMEM_UDCFLUSH
- CALL SHMEM_WAIT(FLAG_VAR, 0)
- PRINT*,ARRAY ! ARRAY has been delivered
- ENDIF
- END
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- iiiinnnnttttrrrroooo____sssshhhhmmmmeeeemmmm(3), sssshhhhmmmmeeeemmmm____bbbbaaaarrrrrrrriiiieeeerrrr(3), sssshhhhmmmmeeeemmmm____bbbbaaaarrrrrrrriiiieeeerrrr____aaaallllllll(3),
- sssshhhhmmmmeeeemmmm____ffffeeeennnncccceeee(3), sssshhhhmmmmeeeemmmm____ppppuuuutttt(3), sssshhhhmmmmeeeemmmm____wwwwaaaaiiiitttt(3)
-
- ccccpppppppp(1)
-
- _M_e_s_s_a_g_e _P_a_s_s_i_n_g _T_o_o_l_k_i_t: _M_P_I _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l
-